// pages/a1/a1.js
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    hasUserInfo:false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    userInfo:{},
    sendMessage:'',
    resetMessage:'',
    article:'',
    manager:"om_cF5dztmTrtre_rmNyilcECL0I"
  },
  onDeleteArticle:function(){
    var that = this
    wx.showModal({
      cancelColor: 'cancelColor',
      title:'确定删除这篇笔记？',
      success:function(res){
        if(res.cancel){

        }else{
          const db = wx.cloud.database();
          db.collection('articles').doc(that.data.article._id).remove({
            success:function(res){
              console.log("[数据库 articles] 删除一条记录")
              wx.switchTab({
                url: '../index/index',
              })
            }
          })
        }
      },
      fail:function(){
        console.err("[数据库 articles] 删除失败")
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.showLoading({
      title: '刷新中',
    })
    var article_str = options.article;
    var tapIndex = options.tapIndex;
     this.setData({
       article:JSON.parse(article_str),
       tapIndex:tapIndex
     })
     this.onQuery(function(){
       wx.hideLoading({
         success: (res) => {},
       })
     });
  },
    //点赞
    onFavorButtonClick(){
      if(!this.data.hasUserInfo){
        wx.showToast({
          icon:'none',
          title: '请先点击底部按钮登录',
        })
        return
      }
      if(this.data.hasFavor){
        wx.showToast({
          icon:'none',
          title: '你已经点过赞了！'
        });
      }else{
      //没有点过赞
        var tmp = this.data.article;
        tmp.favorNum+=1;
        tmp.favorMembers.push({
          openid:app.globalData.openid,
          avatarUrl:app.globalData.avatarUrl
        });
        this.setData({
          article:tmp,
          hasFavor:true
        })
        var that = this;
        const db = wx.cloud.database();
        db.collection('articles').doc(this.data.article._id).update({
          data: {
            favorMembers:tmp.favorMembers,
          },
          success: res => {
            console.log('[数据库][更新记录] [comments] 成功',res)
            //更新全局数据
            that.updateGlobalData();
          },
          fail: err => {
            icon: 'none',
            console.error('[数据库] [更新记录] 失败：', err)
          }
        })
      }

    },
      /**
   * 提交评论
   */
  handleCommentSubmit:function(e){
    this.setData({
      sendMessage:this.data.resetMessage
    })
    var that = this;
    if(!e.detail.value.comment_input){
      wx.showToast({
        icon:'none',
        title: '评论不能为空哦'
      })
    }else{
      wx.showLoading({
        title: '提交中',
      })
      this.getServerTime(function(){
        var newComment={
          _openid:app.globalData.openid,
          avatarUrl:app.globalData.userInfo.avatarUrl,
          content:e.detail.value.comment_input,
          date:that.data.serverTime,
          nickName:app.globalData.userInfo.nickName
        }
        that.onCommentSubmit(newComment);
      });
    }
  },
  /*
  *用户权限获取
  */
  getUserInfo(e) {
    //用户点击同意获得
    if(e.detail.userInfo){
      wx.showLoading({
        title: '正在加载',
      })
      app.globalData.userInfo = e.detail.userInfo
      var that = this;
      this.onGetOpenid(function(){
        that.setData({
          openid:app.globalData.openid,
          userInfo: e.detail.userInfo,
          hasUserInfo: true
        },function(){
          that.setHasFavor(app.globalData.openid)
          wx.hideLoading({
            success: (res) => {},
          })
        })
      })
    }else{
      this.setData({
        hasUserInfo: false
      })
    }
  },
    /**
   * 数据库更新评论
   */
  onCommentSubmit: function(newComment) {
    const db = wx.cloud.database();
    var newComments = this.data.article.comments
     newComments.push(newComment);
     console.log(newComments)
    db.collection('articles').doc(this.data.article._id).update({
      data: {
        comments:newComments
      },
      success: res => {
        this.data.article.comments=newComments;
        this.setData({
          article:this.data.article
        })
        console.log('[数据库][更新记录] [comments] 成功',res)
        //更新全局数据
        wx.hideLoading({
          success: (res) => {},
        })
        updateGlobalData();
      },
      fail: err => {
        icon: 'none',
        console.error('[数据库] [更新记录] 失败：', err)
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    //权限预获取
    var that = this
    if(app.globalData.userInfo&&app.globalData.openid){
      this.setData({
        hasUserInfo:true,
        avatarUrl: app.globalData.userInfo.avatarUrl,
        userInfo: app.globalData.userInfo,
        openid:app.globalData.openid
      },function(){
          that.setHasFavor(app.globalData.openid);
      })
    }
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              this.setData({
                avatarUrl: res.userInfo.avatarUrl,
                userInfo: res.userInfo,
                hasUserInfo:true
              })
              that.onGetOpenid(function(){
                app.globalData.userInfo = that.data.userInfo;
                app.globalData.avatarUrl = that.data.avatarUrl
                that.setHasFavor(app.globalData.openid)
              })
          }
          })
        }
      }
    })
  },
  setHasFavor:function(openid){
    // console.log(openid)
    // console.log(this.data.article.favorMembers.indexOf(openid))
    var res = this.data.article.favorMembers.some(item=>{
      if(item.openid==openid){
        this.setData({
          hasFavor:true
        })
        return true
      }else{
        this.setData({
          hasFavor:false
        })
      }
    })
    // if(this.data.article.favorMembers.indexOf(openid)>=0){

    // }else{

    // }
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    wx.showNavigationBarLoading(); //在标题栏中显示加载图标
    this.onQuery(function(){
      wx.hideNavigationBarLoading(); //完成停止加载图标
      wx.stopPullDownRefresh();
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
　　// 设置菜单中的转发按钮触发转发事件时的转发内容
　　var shareObj = {
　　　　title: "我分享了一篇文章",        // 默认是小程序的名称(可以写slogan等)
　　　　path: '/pages/note/note?article='+JSON.stringify(this.data.article),        // 默认是当前页面，必须是以‘/’开头的完整路径
　　　　imageUrl: '',     //自定义图片路径
  };
  　　  return shareObj;
// 　　 来自页面内的按钮的转发
// 　　if( options.from == 'button' ){
// 　　　　var eData = options.target.dataset;
// 　　　　console.log( eData.name );     // shareBtn
// 　　　　// 此处可以修改 shareObj 中的内容
// 　　　　shareObj.path = '/pages/btnname/btnname?btn_name='+eData.name;
// 　　}
　　// 返回shareObj

  },
  //分享朋友圈
  onShareTimeline:function(){
    var shareObj={
      title:this.data.article.title,
      query:'article='+JSON.stringify(this.data.article),
      imageUrl:''
    };
    return shareObj;
  },
  onQuery: function(callback) {
    const db = wx.cloud.database()
    // 通过查询更新评论
    db.collection('articles').where({
      _id:this.data.article._id
    }).get({
      success: res => {
        if(res.data){
          this.setData({
            article:res.data[0]
          })
          console.log('[数据库] [查询记录] 成功: ', res);
          callback();
        }else{
          console.log('文章已被删除')
        }

      },
      fail: err => {
        wx.showToast({
          icon: 'none',
          title: '查询记录失败'
        })
        console.error('[数据库] [查询记录] 失败：', err)
      }
    })
  },
  onGetOpenid: function(callback) {
    // 调用云函数
    wx.cloud.callFunction({
      name: 'login',
      data: {},
      success: res => {
        app.globalData.openid = res.result.openid
        callback();
      },
      fail: err => {
        console.error('[云函数] [login] 调用失败', err)
      }
    })
  },
  getServerTime:function(callback){
    wx.cloud.callFunction({
      name: 'getdate',
      data: {},
      success: res => {
        this.setData({
          serverTime:res.result.localTime
        })
        callback();
      },
      fail: err => {
        wx.showToast({
          icon: 'none',
          title: '获取服务器时间失败',
        })
        console.error('[云函数] [sum] 调用失败：', err)
      }
    })
  },
  updateGlobalData:function(){
    app.globalData.articles[this.data.tapIndex] = this.data.article
  }
})